static ssize_t dom_mem_write(struct file * file, const char * buff,
size_t size , loff_t * off)
{
- printk(KERN_ALERT "bd240 debug: dom_mem_write invoked!\n");
-
unsigned long addr;
proc_memdata_t * mem_data = (proc_memdata_t *)((struct proc_dir_entry *)file->f_dentry->d_inode->u.generic_ip)->data;
copy_from_user(&addr, (unsigned long *)buff, sizeof(addr));
- printk(KERN_ALERT "bd240 debug: dom_mem_write addr %lx\n", addr);
-
if(direct_disc_unmap(addr, mem_data->pfn, mem_data->tot_pages) == 0){
return sizeof(addr);
} else {
unsigned long addr;
pgprot_t prot;
- printk(KERN_ALERT "bd240 debug: dom_mem_read invoked!\n");
-
proc_memdata_t * mem_data = (proc_memdata_t *)((struct proc_dir_entry *)file->f_dentry->d_inode->u.generic_ip)->data;
prot = PAGE_SHARED;
/* remap the range using xen specific routines */
- printk(KERN_ALERT "bd240 debug: mem_read: mem_data %lx\n", mem_data);
-
addr = direct_mmap(mem_data->pfn << PAGE_SHIFT, mem_data->tot_pages << PAGE_SHIFT, prot, 0, 0);
//addr = direct_mmap(mem_data->pfn, mem_data->tot_pages << PAGE_SHIFT, prot, 1,
// mem_data->tot_pages);
static int dom_map_mem(unsigned int dom, unsigned long pfn, int tot_pages)
{
- printk(KERN_ALERT "bd240 debug: dom_map_mem: invoked\n");
-
int ret = -ENOENT;
struct proc_dir_entry * pd = xeno_base->subdir;
struct proc_dir_entry * file;
proc_memdata_t * memdata;
- printk(KERN_ALERT "bd240 debug: dom_map_mem invoked, xeno_base %lx, subdir %lx\n", xeno_base, xeno_base->subdir);
-
while(pd != NULL){
if((pd->mode & S_IFDIR) && ((dom_procdata_t *)pd->data)->domain == dom){
memdata->tot_pages = tot_pages;
file->data = memdata;
- printk(KERN_ALERT "bd240 debug: associated memdata with proc, memdata %lx, pfn %lx, tot_pages %lx\n", file->data, memdata->pfn, memdata->tot_pages);
-
ret = 0;
break;
}
} else {
- printk(KERN_ALERT "bd240 debug: mapping dom %d, %lx, %lx\n", op.u.reqdommem.domain, op.u.reqdommem.start_pfn, op.u.reqdommem.tot_pages);
-
ret = dom_map_mem(op.u.reqdommem.domain, op.u.reqdommem.start_pfn,
op.u.reqdommem.tot_pages);
}
/* set up /proc entries for dom 0 */
create_proc_dom_entries(0);
- printk(KERN_ALERT "bd240 debug: task 1 addr %lx\n", find_task_by_pid(1));
-
return 0;
}
pte++;
} while (address && (address < end));
- printk(KERN_ALERT "bd240 debug: exit from direct_remappte_range\n");
}
static inline int direct_remappmd_range(struct mm_struct *mm, pmd_t * pmd, unsigned long address, unsigned long size,
dmmap->addr = addr;
list_add(&dmmap->list, ¤t->mm->context.direct_list);
- printk(KERN_ALERT "bd240 debug: direct_mmap: enlisting addr %lx\n", dmmap->addr);
-
/* and perform the mapping */
if(flag == MAP_DISCONT){
ret = direct_remap_disc_page_range(addr, phys_addr, tot_pages, prot);
} else {
- printk(KERN_ALERT "bd240 debug: addr %lx, phys_addr %lx, size %lx\n",
- addr, phys_addr, size);
ret = direct_remap_page_range(addr, phys_addr, size, prot);
}
if (pte_none(pte))
continue;
freed ++;
- printk(KERN_ALERT "bd240 debug: clearing ptr %lx\n", __pa(ptep) + start_info.phys_base);
direct_pte_clear(ptep);
}
struct list_head * curr;
struct list_head * direct_list = ¤t->mm->context.direct_list;
- printk(KERN_ALERT "bd240 debug: direct_disc_unmap: from %lx\n", from);
-
curr = direct_list->next;
while(curr != direct_list){
node = list_entry(curr, direct_mmap_node_t, list);
- printk(KERN_ALERT "bd240 debug: direct_disc_unmap: node %lx\n", node->addr);
-
if(node->addr == from)
break;
curr = curr->next;